View directory or file contents with optional line range and numbers
Exported source
def view(path:str, view_range:tuple[int,int]=None, nums:bool=False):'View directory or file contents with optional line range and numbers'try: p = Path(path).expanduser().resolve()ifnot p.exists(): returnf'Error: File not found: {p}'if p.is_dir(): res = [str(f) for f in p.glob('**/*') ifnotany(part.startswith('.') for part in f.relative_to(p).parts)]returnf'Directory contents of {p}:\n'+'\n'.join(res) lines = p.read_text().splitlines() s,e =1,len(lines)if view_range: s,e = view_rangeifnot (1<= s <=len(lines)): returnf'Error: Invalid start line {s}'if e !=-1andnot (s <= e <=len(lines)): returnf'Error: Invalid end line {e}' lines = lines[s-1:Noneif e==-1else e]return'\n'.join([f'{i+s-1:6d} │ {l}'for i,l inenumerate(lines,1)] if nums else lines)exceptExceptionas e: returnf'Error viewing file: {str(e)}'
Creates a new file with the given content at the specified path
Exported source
def create(path: str, file_text: str, overwrite:bool=False) ->str:'Creates a new file with the given content at the specified path'try: p = Path(path)if p.exists():ifnot overwrite: returnf'Error: File already exists: {p}' p.parent.mkdir(parents=True, exist_ok=True) p.write_text(file_text)returnf'Created file {p} containing:\n{file_text}'exceptExceptionas e: returnf'Error creating file: {str(e)}'
def insert(path: str, insert_line: int, new_str: str) ->str:'Insert new_str at specified line number'try: p = Path(path)ifnot p.exists(): returnf'Error: File not found: {p}' content = p.read_text().splitlines()ifnot (0<= insert_line <=len(content)): returnf'Error: Invalid line number {insert_line}' content.insert(insert_line, new_str) new_content ='\n'.join(content) p.write_text(new_content)returnf'Inserted text at line {insert_line} in {p}.\nNew contents:\n{new_content}'exceptExceptionas e: returnf'Error inserting text: {str(e)}'
insert('test.txt', 0, 'Let\'s add a new line')print(view('test.txt', nums=True))
1 │ Let's add a new line
2 │ Let's add a
3 │ Let's add a
4 │ Let's add a
5 │ Hello, world!
Replace first occurrence of old_str with new_str in file
Exported source
def str_replace(path: str, old_str: str, new_str: str) ->str:'Replace first occurrence of old_str with new_str in file'try: p = Path(path)ifnot p.exists(): returnf'Error: File not found: {p}' content = p.read_text() count = content.count(old_str)if count ==0: return'Error: Text not found in file'if count >1: returnf'Error: Multiple matches found ({count})' new_content = content.replace(old_str, new_str, 1) p.write_text(new_content)returnf'Replaced text in {p}.\nNew contents:\n{new_content}'exceptExceptionas e: returnf'Error replacing text: {str(e)}'
Dispatcher for Anthropic Text Editor tool commands: view, str_replace, create, insert, undo_edit.
model = models[1]
c = Chat(model, tools=[text_editor_conf['sonnet']], ns=mk_ns(str_replace_based_edit_tool))c.toolloop('Please explain what my _quarto.yml does. Use your tools')
Explanation of Your _quarto.yml File
Your _quarto.yml file is a configuration file for Quarto, a scientific and technical publishing system. This file is specifically set up to generate a documentation website for your claudette project. Here’s what each section does:
Social media: Enables Twitter cards and Open Graph meta tags for link previews
repo-actions: [issue]: Adds “Report an issue” link to pages
Navigation: Primary-colored navbar with search functionality
sidebar: floating: Creates a floating sidebar style
Metadata Integration
metadata-files:- nbdev.yml- sidebar.yml
Imports additional configuration from nbdev.yml (which I can see contains site title, URL, and repo info)
References sidebar.yml (though this file doesn’t exist in your directory)
Purpose
This configuration is designed for nbdev, a system that creates documentation websites from Jupyter notebooks. It’s set up to: 1. Convert your Jupyter notebooks (like 00_core.ipynb, 01_toolloop.ipynb, etc.) into web pages 2. Create a professional documentation site for the claudette library 3. Publish to https://claudette.answer.ai/ (as specified in nbdev.yml) 4. Provide a wide layout suitable for code documentation with syntax highlighting and interactive features
The setup suggests this is a Python library documentation site built from Jupyter notebooks using the nbdev workflow.
id: msg_01RYHyNnmymn6hBXMHQNS1ck
content: [{'citations': None, 'text': '## Explanation of Your_quarto.ymlFile\n\nYour_quarto.ymlfile is a configuration file for **Quarto**, a scientific and technical publishing system. This file is specifically set up to generate a documentation website for yourclaudetteproject. Here\'s what each section does:\n\n### **Project Configuration**\n```yaml\nproject:\n type: website\n resources: \n - "*.txt"\n preview:\n port: 3000\n browser: false\n```\n- **type: website**: Tells Quarto to build a website (rather than a book, document, etc.)\n- **resources**: Includes all.txtfiles in the website output\n- **preview**: Sets up local development server on port 3000 without auto-opening browser\n\n### **HTML Format Settings**\n```yaml\nformat:\n html:\n theme: cosmo\n css: styles.css\n toc: true\n code-tools: true\n code-block-bg: true\n code-block-border-left: "#31BAE9"\n highlight-style: arrow\n```\n- **theme: cosmo**: Uses the "Cosmo" Bootstrap theme for styling\n- **css: styles.css**: Applies custom CSS from yourstyles.cssfile\n- **toc: true**: Enables table of contents on pages\n- **code-tools: true**: Adds interactive code tools (copy, view source, etc.)\n- **Code styling**: Sets background, blue left border (#31BAE9), and "arrow" syntax highlighting\n\n### **Layout Configuration**\n```yaml\ngrid:\n sidebar-width: 180px\n body-width: 1800px\n margin-width: 150px\n gutter-width: 1.0rem\nkeep-md: true\n```\n- **Grid system**: Defines a wide layout (1800px body) with specific sidebar and margin widths\n- **keep-md: true**: Preserves intermediate Markdown files during rendering\n\n### **Website Features**\n```yaml\nwebsite:\n twitter-card: true\n open-graph: true\n repo-actions: [issue]\n navbar:\n background: primary\n search: true\n sidebar:\n style: floating\n```\n- **Social media**: Enables Twitter cards and Open Graph meta tags for link previews\n- **repo-actions: [issue]**: Adds "Report an issue" link to pages\n- **Navigation**: Primary-colored navbar with search functionality\n- **sidebar: floating**: Creates a floating sidebar style\n\n### **Metadata Integration**\n```yaml\nmetadata-files:\n - nbdev.yml\n - sidebar.yml\n```\n- Imports additional configuration fromnbdev.yml(which I can see contains site title, URL, and repo info)\n- Referencessidebar.yml(though this file doesn\'t exist in your directory)\n\n### **Purpose**\nThis configuration is designed for **nbdev**, a system that creates documentation websites from Jupyter notebooks. It\'s set up to:\n1. Convert your Jupyter notebooks (like00_core.ipynb,01_toolloop.ipynb, etc.) into web pages\n2. Create a professional documentation site for theclaudettelibrary\n3. Publish tohttps://claudette.answer.ai/(as specified innbdev.yml)\n4. Provide a wide layout suitable for code documentation with syntax highlighting and interactive features\n\nThe setup suggests this is a Python library documentation site built from Jupyter notebooks using the nbdev workflow.', 'type': 'text'}]